package ar.com.logic.components.strategy;

import java.util.List;
import java.util.Random;
import java.util.Vector;

import ar.com.logic.components.Numero;
import ar.com.logic.components.interfaces.IHistoricoRespuestas;
import ar.com.logic.components.interfaces.IMatrizPosiciones;
import ar.com.logic.evaluador.Respuesta;

public class EstrategiaRandom extends Estrategia {
	public EstrategiaRandom(IMatrizPosiciones matriz,
			IHistoricoRespuestas historico) {
		super(matriz, historico);
		// TODO Auto-generated constructor stub
	}

	public Numero getSiguienteNumero() {
		return generarNumeroRandom();
	}

	private Numero generarNumeroRandom() {

		Numero n = new Numero();
		Random rand = new Random();
		Respuesta r = new Respuesta();
		Integer d = 0;
		boolean repetido = true;
		while (repetido) {
			n = new Numero();
			for (int i = 0; i < matriz.getMaxPosiciones(); i++) {
				if (n.getNumero().size() == 0) {
					d = rand.nextInt(10);
				} else {
					while (n.contiene(d)) {
						d = rand.nextInt(10);

					}
				}
				n.agregarDigito(d);
			}
			r.setNumero(n);
			repetido = historicoRespuestas.contains(r);
				
		}

		return n;
	}

	public String getNombre() {

		return IEstrategia.RANDOM;
	}

	public List<Respuesta> getRespuestasEsperadas() {
		// TODO Auto-generated method stub
		return new Vector<Respuesta>();
	}

	@Override
	public Integer getPriority() {
		
		return 1;
	}

	@Override
	public boolean esUnicaEjecucion() {
		// TODO Auto-generated method stub
		return false;
	}


}
